<br/><br/>
<p>api front 是HTTP API前端，可进行API<code>代理转发</code>、<code>协议抓包分析</code>、<code>流量复制</code>。</p>
<div>
用于解决如下问题：
<ol>
<li>HTTP API大行其道,开发调试（特别是联调）花费的时间、人力成本很高。</li>
<li>后端的API调用是一个黑盒，特别是有问题的时候，基本是抓瞎(目前一般是把请求信息记录到日志中去)。</li>
<li>线下联调测试环境复杂多变，配置文件经常变动，经常其中一个环境好了另外一个又坏了。</li>
</ol>
</div>
<br/>

<h4>两种典型应用场景：</h4>
<p><code>API输出:</code></p>
<p>对外接口统一使用api-front管理，第三方通过api-front调用接口,作为统一输出网关。</p>

<p><code>API接入:</code></p>
<p>接入外部依赖的api接口统一使用api-front管理，作为统一接入网关，第三方环境变动可轻松切换,不需要修改代码配置。</p>

<br/><br/>
<h4>部署结构：</h4>
<p>客户端和真实的后端不直接可见，api-front作为统一网关。</p>
<p><img src="/_/res/img/dispatch.png"></p>
<div>
说明：
<p>api-front是对外公开的统一的联调环境地址(或者外部api接入时的统一网关)。</p>
<p>client-0的请求会发送给server-0和server-2。</p>
<p>client-1的请求会发送给server-0。</p>
<p>client-2的请求会发送给server-1。</p>
</div>

<!-- 
<h3>解决多模块多人开发联调问题：</h3>
<p><code>1.一种情况：2个模块分别2个人开发，2个环境都能收到数据。</code></p>
<p><img src="/_/res/img/useage_0.png"></p>
<p><code>2.另一种情况：合作有交叉，下游一个人就收不到数据了。</code></p>
<p><img src="/_/res/img/useage_1.png"></p>
<p><code>3.一个理想的情况：合作有交叉时，下游每个人都能收到数据。</code></p>
<p><img src="/_/res/img/useage_2.png"></p>
<p><code>同时可实现：rd-A0只关心rd-B0的结果，rd-A1只关心rd-B1的结果。</code></p>
 -->

<h4 class="page-header">其他说明</h4>
<a name="adv"></a>
<h4>动态指定Response后端：</h4>
<p>若同时有多个后端（如 a,b,c 共3个），可以在http的 <code>GET/POST、Header</code>中设置参数<code>api_pref=a,b</code>来指定返回Response的后端。</p>
<p>设置cookie格式为:<code>api_pref_{apiName}=a,b</code>。</p>
<p>参数优先级：<code>1-GET/POST</code> &gt; <code>2-Cookie</code> &gt; <code>3-Header</code>  &gt; <code>4-IP</code>。</p>
